<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');


class Administration extends CI_Model
{
	function __construct()
	{
		parent::__construct();
	}
        
        function return_date_main()
        {
            $query= $this->db->get_where('prode_cat_date',array('dtIsMain'=>1));
            if ($query->num_rows() != 0)
            {
                    $dateId = $query->row('dtId');
                    
                    //Evaluar si hizo o no la jugada
                    $query = $this->db->get_where('prode_cat_game_format',array('dtId'=>$dateId));
                    
                    $game = array();
                    
                    foreach($query->result() as $valor)
                    {
                            

                                    $game[] = array(
                                                  'localName'	=> $this->BuscarNombre($valor->tmIdLocal),
                                                  'localImage'	=> $this->BuscarLogo($valor->tmIdLocal),
                                                  'visitName'	=> $this->BuscarNombre($valor->tmIdVisit),
                                                  'visitImage'	=> $this->BuscarLogo($valor->tmIdVisit),
                                                  );
                    }
                    
                    return $game;
            }
            else
            {
                    return false;
            }
        }
        
        function return_positions($idGpo)
        {
		$this->db->select('prode_cat_user.usrName,prode_cat_user.usrCompletName,prode_cat_user.pictureUrl,prode_cat_user.usrId');
		$this->db->from('prode_cat_user');
		$this->db->join('prode_cat_gpouser', 'prode_cat_gpouser.usrId = prode_cat_user.usrId');
		$array = array('prode_cat_gpouser.gpoId'=>$idGpo);
		$this->db->where($array);
		$queryUsers = $this->db->get();	
		if($queryUsers->num_rows() != 0)
		{
			$res = array();
			
			foreach($queryUsers->result() as $usr)
			{
				$puntos = 0;
				$usrId = $usr->usrId;
				$query= $this->db->get_where('prode_cat_date',array( 'dtIsMain' => 0 ));
		
				if ($query->num_rows() != 0)
				{
					
					foreach($query->result() as $valor)
					{						
						//Formato de la fecha
						$queryDate = $this->db->get_where('prode_cat_game_format',array( 'dtId' => $valor->dtId ));
						
						foreach($queryDate->result() as $dates)
						{
							//comparar resultados
							//resultado del game
							$queryGame = $this->db->get_where('prode_cat_game_result',array( 'gfId' => $dates->gfId ));
							$resultado = $queryGame->row('gmResult');
							
							//resultado del usuario
							$queryGameUsr = $this->db->get_where('prode_cat_game',array( 'gfId' => $dates->gfId, 'usrId' => $usrId, 'gpoId' => $idGpo ));
							$resultadoUsr = $queryGameUsr->row('gmResult');
							$resultadoWillCard = $queryGameUsr->row('gmWillCard');
					
							if($resultado == $resultadoUsr || $resultado == $resultadoWillCard)
							{
								$puntos++;
							}
						}
					}
				}
				
				//...................................................
				//.. Preguntar por fecha parcial ....................
				//...................................................
				if($this->date_limit() == true)
				{
					$query= $this->db->get_where('prode_cat_date',array( 'dtIsMain' => 1 ));
					
					if($query->num_rows() != 0)
					{
						$queryDate = $this->db->get_where('prode_cat_game_format',array( 'dtId' => $query->row('dtId') ));
						
						foreach($queryDate->result() as $dates)
						{
							//comparar resultados
							//resultado del game
							$queryGame = $this->db->get_where('prode_cat_game_result',array( 'gfId' => $dates->gfId ));
							if($queryGame->num_rows() != 0)
							{
								$resultado = $queryGame->row('gmResult');
								
								//resultado del usuario
								$queryGameUsr = $this->db->get_where('prode_cat_game',array( 'gfId' => $dates->gfId, 'usrId' => $usrId, 'gpoId' => $idGpo ));
								$resultadoUsr = $queryGameUsr->row('gmResult');
								$resultadoWillCard = $queryGameUsr->row('gmWillCard');
						
								if($resultado == $resultadoUsr || $resultado == $resultadoWillCard)
								{
									$puntos++;
								}
							}
						}
					}
				}
				//...................................................
				
				$res[] = array(
						'points'	=> $puntos,
						'name'	 	=> $usr->usrName,
						'id'		=> $usr->usrId,
						'realName'	=> $usr->usrCompletName,
						'picture'	=> $usr->pictureUrl
						);
			}
			
			arsort($res);
			//var_dump($res);
			return $res;
		}
		else
		{
			return 0;
		}
		
        }
	
	function return_activity()
	{
		//$query= $this->db->query('CALL activities()');
		
		$this->db->select('prode_cat_user.usrName,prode_cat_user.usrCompletName,prode_cat_user.pictureUrl,prode_cat_operation.opDescription,prode_cat_activity.actDate');
		$this->db->from('prode_cat_activity');
		$this->db->join('prode_cat_user', 'prode_cat_user.usrId = prode_cat_activity.usrId');
		$this->db->join('prode_cat_operation', 'prode_cat_operation.opId = prode_cat_activity.actOp');
		$array = array('prode_cat_activity.usrId != '=>0,'prode_cat_activity.actOp != '=>0);
		$this->db->where($array);
		$this->db->order_by("prode_cat_activity.actDate", "desc");
		$this->db->limit(5);
		$query = $this->db->get();
		
		if ($query->num_rows() != 0)
		    {
			$activ = array();
			
			foreach($query->result() as $valor)
				{
				$activ[] = array(
					      'name' 		=> ($valor->usrName == "" || $valor->usrCompletName == null) ? substr($valor->usrName, 0 ,8).".." : substr($valor->usrCompletName, 0, 8)."..",
					      'operation' 	=> $valor->opDescription,
					      'date'		=> $valor->actDate,
					      'picture'		=> $valor->pictureUrl
					      );
				}
			return $activ;
		    }
		else
		    {
			return false;
		    }
		
	}
        
        function BuscarNombre($idTeam)
	{
		$query= $this->db->get_where('prode_cat_team',array('tmId'=>$idTeam));
		
		return $query->row('tmDescription');
	}
	
	function BuscarLogo($idTeam)
	{
		$query= $this->db->get_where('prode_cat_team',array('tmId'=>$idTeam));
		
		return $query->row('tmImage');
	}
	
	function return_dates()
	{
		$query = $this->db->get_where('prode_cat_date', array('dtIsMain' => 0));
		
		//return $query->result_array();
		$array = array();
		
		if($query->num_rows() > 0)
		{
			foreach($query->result() as $r)
			{
				
				$array[] = array(
						 'dtId' 	 => $r->dtId,
						 'dtDescription' => $r->dtDescription
						 );
			}
		}
		
		//..................................................................
		//... Region resultado parcial fecha actual ........................
		//..................................................................
		
		//preguntar si termino la fecha actual
		$query= $this->db->get_where('prode_cat_date',array( 'dtIsMain' => 1 ));
		
		if($query->num_rows() != 0)
		{
			//preguntar si la fecha ya cerro
			if($this->date_limit() == true)
			{
				$array[] = array(
						 'dtId' 	 => $query->row('dtId'),
						 'dtDescription' => $query->row('dtDescription')
						);
			}
		}
			
		return $array;	
	}
        
	function date_limit()
	{
		$query= $this->db->get_where('prode_cat_date',array('dtIsMain'=>1));
		if ($query->num_rows() != 0)
		{
			$date = $query->row('dtDayLimit');
			$fecha2 = date("Y-m-d"); 
			
			$fecha1 = str_replace('/','-',$date);
			
			//$fecha1 => fecha limite de juego
			//$fecha2 => fecha actual
			
			if($fecha1 > $fecha2)
			{
				return false;
			}
			else
			{
				if($fecha1 == $fecha2)
				{
					//preguntar si son menos de las 18:00 horas
					if( date("G") >= 18 )
					{
						return true;
					}
					else
					{
						return false;
					}
				}
				else
				{
					return true;
				}
			}
		}
		else
		{
			return false;
		}
	}
	
	function result_for_date($data = null)
	{
		$gpoId = $data['gpo'];
		$dtId = $data['dte'];
		$this->db->select('prode_cat_user.usrId,prode_cat_user.usrName,prode_cat_user.usrCompletName,prode_cat_user.pictureUrl');
		$this->db->from('prode_cat_user');
		$this->db->join('prode_cat_gpouser', 'prode_cat_gpouser.usrId = prode_cat_user.usrId');
		$array = array('prode_cat_gpouser.gpoId'=>$gpoId);
		$this->db->where($array);
		$queryUsers = $this->db->get();	
		if($queryUsers->num_rows() != 0)
		{
			$res = array();
			
			foreach($queryUsers->result() as $usr)
			{
				$puntos = 0;
				$usrId = $usr->usrId;
				$query= $this->db->get_where('prode_cat_date',array( 'dtId' => $dtId ));
		
				if ($query->num_rows() != 0)
				{
					
					//foreach($query->result() as $valor)
					//{						
						//Formato de la fecha
						$queryDate = $this->db->get_where('prode_cat_game_format',array( 'dtId' => $query->row('dtId') ));
						
						foreach($queryDate->result() as $dates)
						{
							//comparar resultados
							//resultado del game
							$queryGame = $this->db->get_where('prode_cat_game_result',array( 'gfId' => $dates->gfId ));
							if($queryGame->num_rows() != 0)
							{
								$resultado = $queryGame->row('gmResult');
								
								//resultado del usuario
								$queryGameUsr = $this->db->get_where('prode_cat_game',array( 'gfId' => $dates->gfId, 'usrId' => $usrId, 'gpoId' => $gpoId ));
								$resultadoUsr = $queryGameUsr->row('gmResult');
								$resultadoWillCard = $queryGameUsr->row('gmWillCard');
						
								if($resultado == $resultadoUsr || $resultado == $resultadoWillCard)
								{
									$puntos++;
								}
							}
						}
					//}
				}
				
				if($usr->usrCompletName == "" || $usr->usrCompletName == null)
				$name = $usr->usrName;
				else
				$name = $usr->usrCompletName;
				
				$res[] = array(
						'points'	=> $puntos,
						'name'	 	=> $name,
						'id'		=> $usr->usrId,
						'picture'	=> $usr->pictureUrl
						);
			}
			arsort($res);
			return $res;
		}
		else
		{
			return 0;
		}
		
	}
	function get_positions_team()
	{
		$query = $this->db->get('prode_cat_team');
		
		$positions = array();
		
		foreach($query->result() as $valor)
		{
			$info = $this->get_info_team($valor->tmId);
			
			$positions[] = array(
						'tmImage' 		=> $valor->tmImage,
						'tmDescription' 	=> $valor->tmDescription,
						'ganados'		=> $info['ganados'],
						'empatados'		=> $info['empatados'],
						'perdidos'		=> $info['perdidos'],
						'jugados'		=> $info['ganados'] + $info['empatados'] + $info['perdidos'],
						'puntos'		=> ($info['ganados'] * 3) + $info['empatados']
					     );
		}
		
		foreach ($positions as $key => $row) {
			$aux[$key] = $row['puntos'];
		}
		array_multisort($aux, SORT_DESC, $positions);
		
		return $positions;
	}
	
	function get_info_team($tmId)
	{
		$mainDate = $this->db->get_where('prode_cat_date', array('dtIsMain' => 1));
			
		$idFecha = 0;
		if($mainDate->num_rows() > 0)
		{
			$idFecha = $mainDate->row('dtId');	
		}			
			
		$idTeam = $tmId;
		$this->db->where('(tmIdLocal = '.$idTeam.' or tmIdVisit = '.$idTeam.') and dtId != '.$idFecha.' ');
		$query = $this->db->get('prode_cat_game_format');
		
		if($query->num_rows() > 0)
		{
			$partidos 	= 0;
			$ganados 	= 0;
			$ganadosLoc	= 0;
			$ganadosVis	= 0;
			$empatados 	= 0;
			$empatadosLoc	= 0;
			$empatadosVis	= 0;
			$perdidos 	= 0;
			$perdidosLoc	= 0;
			$perdidosVis	= 0;
			
			$partidos = $query->num_rows();
			
			foreach($query->result() as $valor)
			{
				$resultado = $this->db->get_where('prode_cat_game_result',array('gfId'=>$valor->gfId));
				
				if($resultado->num_rows() > 0)
				{
					$res = $resultado->row('gmResult');
					
					switch($res)
					{
						//Empate
						case 0:
							$empatados++;
							if($valor->tmIdLocal == $idTeam)
							{$empatadosLoc++;}
							else
							{$empatadosVis++;}
							break;
						
						//Local
						case 1:
							if($valor->tmIdLocal == $idTeam)
							{
								$ganados++;
								$ganadosLoc++;
							}
							else
							{
								$perdidos++;
								$perdidosLoc++;
							}
							break;
						
						//Visitante
						case 2:
							if($valor->tmIdVisit == $idTeam)
							{
								$ganados++;
								$ganadosVis++;
							}
							else
							{
								$perdidos++;
								$perdidosVis++;
							}
							break;
					}
				}
			}
			
			$array = 	array(	'ganados' 	=> $ganados, 
						'ganadosLoc' 	=> $ganadosLoc,
						'ganadosVis'	=> $ganadosVis,
						'empatados' 	=> $empatados,
						'empatadosLoc'  => $empatadosLoc,
						'empatadosVis'  => $empatadosVis,
						'perdidos' 	=> $perdidos,
						'perdidosLoc' 	=> $perdidosLoc,
						'perdidosVis'	=> $perdidosVis,
						'partidos'	=> $partidos
						);
			
			return $array;
		}
		else
		{
			return false;
		}
	}
}
?>